[INFO] cloning repository https://github.com/chat812/remote-mcp
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/chat812/remote-mcp" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchat812%2Fremote-mcp", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchat812%2Fremote-mcp'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f976934acf866681a65d111172dd9880d5824174
[INFO] checking chat812/remote-mcp against master#c0bb140a37c81cf59a0b40c21c9413059644e294 for pr-129249-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchat812%2Fremote-mcp" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/chat812/remote-mcp
[INFO] finished tweaking git repo https://github.com/chat812/remote-mcp
[INFO] tweaked toml for git repo https://github.com/chat812/remote-mcp written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/chat812/remote-mcp on toolchain c0bb140a37c81cf59a0b40c21c9413059644e294
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c0bb140a37c81cf59a0b40c21c9413059644e294" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/chat812/remote-mcp already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c0bb140a37c81cf59a0b40c21c9413059644e294" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wayland-protocols v0.30.1
[INFO] [stderr]   Downloaded serial-windows v0.4.0
[INFO] [stderr]   Downloaded strip-ansi-escapes v0.2.1
[INFO] [stderr]   Downloaded display-info v0.4.8
[INFO] [stderr]   Downloaded memmap2 v0.7.1
[INFO] [stderr]   Downloaded serial-unix v0.4.0
[INFO] [stderr]   Downloaded seize v0.3.3
[INFO] [stderr]   Downloaded uiautomation_derive v0.7.7
[INFO] [stderr]   Downloaded windows-service v0.6.0
[INFO] [stderr]   Downloaded libwayshot v0.2.0
[INFO] [stderr]   Downloaded ioctl-rs v0.1.6
[INFO] [stderr]   Downloaded uiautomation v0.24.4
[INFO] [stderr]   Downloaded wayland-protocols-wlr v0.1.0
[INFO] [stderr]   Downloaded flurry v0.5.2
[INFO] [stderr]   Downloaded serial-core v0.4.0
[INFO] [stderr]   Downloaded salsa20 v0.10.2
[INFO] [stderr]   Downloaded ssh-cipher v0.2.0
[INFO] [stderr]   Downloaded termios v0.2.2
[INFO] [stderr]   Downloaded russh-cryptovec v0.7.3
[INFO] [stderr]   Downloaded screenshots v0.8.10
[INFO] [stderr]   Downloaded portable-pty v0.8.1
[INFO] [stderr]   Downloaded ssh-encoding v0.2.0
[INFO] [stderr]   Downloaded russh v0.44.1
[INFO] [stderr]   Downloaded serial v0.4.0
[INFO] [stderr]   Downloaded bcrypt-pbkdf v0.10.0
[INFO] [stderr]   Downloaded russh-keys v0.44.0
[INFO] [stderr]   Downloaded pkcs5 v0.7.1
[INFO] [stderr]   Downloaded scrypt v0.11.0
[INFO] [stderr]   Downloaded ssh-key v0.6.7
[INFO] [stderr]   Downloaded rmcp v0.1.5
[INFO] [stderr]   Downloaded russh-sftp v2.1.1
[INFO] [stderr]   Downloaded windows v0.51.1
[INFO] [stderr]   Downloaded rmcp-macros v0.1.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3e793bdf10248eb2ddbd6b0faebed8155c11b4589982e2893733958d93e8d540" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 21313dbaa5d54d365fb0999e576f2ea441d8e2d32b1427de534a3009c9db68eb
[INFO] running `Command { std: "docker" "start" "21313dbaa5d54d365fb0999e576f2ea441d8e2d32b1427de534a3009c9db68eb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "21313dbaa5d54d365fb0999e576f2ea441d8e2d32b1427de534a3009c9db68eb" "/opt/rustwide/cargo-home/bin/cargo" "+c0bb140a37c81cf59a0b40c21c9413059644e294" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "21313dbaa5d54d365fb0999e576f2ea441d8e2d32b1427de534a3009c9db68eb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "21313dbaa5d54d365fb0999e576f2ea441d8e2d32b1427de534a3009c9db68eb" "/opt/rustwide/cargo-home/bin/cargo" "+c0bb140a37c81cf59a0b40c21c9413059644e294" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking base64ct v1.8.3
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling cc v1.2.58
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]     Checking base16ct v0.2.0
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]     Checking utf8parse v0.2.2
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking pem-rfc7468 v0.7.0
[INFO] [stderr]     Checking anstyle-parse v1.0.0
[INFO] [stderr]    Compiling semver v1.0.27
[INFO] [stderr]     Checking is_terminal_polyfill v1.70.2
[INFO] [stderr]     Checking anstyle-query v1.1.5
[INFO] [stderr]     Checking colorchoice v1.0.5
[INFO] [stderr]     Checking der v0.7.10
[INFO] [stderr]     Checking anstyle v1.0.14
[INFO] [stderr]     Checking opaque-debug v0.3.1
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking anstream v1.0.0
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking block-padding v0.3.3
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]    Compiling multer v3.1.0
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking nu-ansi-term v0.50.3
[INFO] [stderr]     Checking strsim v0.11.1
[INFO] [stderr]     Checking clap_lex v1.1.0
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]     Checking clap_builder v4.6.0
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]    Compiling nix v0.28.0
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]     Checking spki v0.7.3
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking num-iter v0.1.45
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling pin-project-internal v1.1.11
[INFO] [stderr]     Checking headers-core v0.3.0
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking socket2 v0.6.3
[INFO] [stderr]     Checking mio v1.2.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking ff v0.13.1
[INFO] [stderr]     Checking crypto-bigint v0.5.5
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking serial-core v0.4.0
[INFO] [stderr]     Checking polyval v0.6.2
[INFO] [stderr]     Checking group v0.13.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking termios v0.2.2
[INFO] [stderr]     Checking ioctl-rs v0.1.6
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking cbc v0.1.2
[INFO] [stderr]     Checking tokio v1.50.0
[INFO] [stderr]     Checking salsa20 v0.10.2
[INFO] [stderr]     Checking signature v2.2.0
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking pbkdf2 v0.12.2
[INFO] [stderr]     Checking hkdf v0.12.4
[INFO] [stderr]     Checking rfc6979 v0.4.0
[INFO] [stderr]     Checking serial-unix v0.4.0
[INFO] [stderr]     Checking ctr v0.9.2
[INFO] [stderr]     Checking ghash v0.5.1
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]     Checking uuid v1.23.0
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]     Checking scrypt v0.11.0
[INFO] [stderr]     Checking matchit v0.7.3
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking nix v0.25.1
[INFO] [stderr]     Checking blowfish v0.9.1
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking num-bigint-dig v0.8.6
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking ssh-encoding v0.2.0
[INFO] [stderr]     Checking headers v0.4.1
[INFO] [stderr]     Checking pkcs5 v0.7.1
[INFO] [stderr]     Checking aes-gcm v0.10.3
[INFO] [stderr]     Checking serial v0.4.0
[INFO] [stderr]     Checking pin-project v1.1.11
[INFO] [stderr]     Checking chacha20 v0.9.1
[INFO] [stderr]     Checking poly1305 v0.8.0
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking pkcs8 v0.10.2
[INFO] [stderr]     Checking filedescriptor v0.8.3
[INFO] [stderr]     Checking clap v4.6.0
[INFO] [stderr]     Checking vte v0.14.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]     Checking home v0.5.12
[INFO] [stderr]     Checking option-ext v0.2.0
[INFO] [stderr]     Checking sec1 v0.7.3
[INFO] [stderr]     Checking pkcs1 v0.7.5
[INFO] [stderr]     Checking ed25519 v2.2.3
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking shell-words v1.1.1
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking strip-ansi-escapes v0.2.1
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]     Checking ssh-cipher v0.2.0
[INFO] [stderr]     Checking bcrypt-pbkdf v0.10.0
[INFO] [stderr]     Checking password-hash v0.4.2
[INFO] [stderr]     Checking elliptic-curve v0.13.8
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling schemars v0.8.22
[INFO] [stderr]     Checking rsa v0.9.10
[INFO] [stderr]     Checking ecdsa v0.16.9
[INFO] [stderr]     Checking primeorder v0.13.6
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]     Checking deranged v0.5.8
[INFO] [stderr]     Checking pbkdf2 v0.11.0
[INFO] [stderr]     Checking which v6.0.3
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking russh-cryptovec v0.7.3
[INFO] [stderr]     Checking md5 v0.7.0
[INFO] [stderr]     Checking seize v0.3.3
[INFO] [stderr]     Checking rustls-webpki v0.103.10
[INFO] [stderr]     Checking dyn-clone v1.0.20
[INFO] [stderr]     Checking p256 v0.13.2
[INFO] [stderr]     Checking p521 v0.13.3
[INFO] [stderr]     Checking ed25519-dalek v2.2.0
[INFO] [stderr]     Checking p384 v0.13.1
[INFO] [stderr]     Checking flurry v0.5.2
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking ssh-key v0.6.7
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking hashlink v0.9.1
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling schemars_derive v0.8.22
[INFO] [stderr]    Compiling rmcp-macros v0.1.5
[INFO] [stderr]     Checking base64 v0.21.7
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking fallible-iterator v0.3.0
[INFO] [stderr]     Checking hex-literal v0.4.1
[INFO] [stderr]     Checking fallible-streaming-iterator v0.1.9
[INFO] [stderr]     Checking sysinfo v0.30.13
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking portable-pty v0.8.1
[INFO] [stderr]     Checking tracing-appender v0.2.4
[INFO] [stderr]     Checking hyper v1.9.0
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking tokio-stream v0.1.18
[INFO] [stderr]     Checking russh-keys v0.44.0
[INFO] [stderr]     Checking rmcp v0.1.5
[INFO] [stderr]     Checking russh-sftp v2.1.1
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking russh v0.44.1
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking axum-extra v0.9.6
[INFO] [stderr]     Checking rusqlite v0.31.0
[INFO] [stderr]     Checking agent v0.1.0 (/opt/rustwide/workdir/crates/agent)
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> crates/agent/src/config.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::Bytes`
[INFO] [stdout]  --> crates/agent/src/jobs.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use bytes::Bytes;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> crates/agent/src/jobs.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{debug, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> crates/agent/src/routes/file.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::io::AsyncWriteExt`
[INFO] [stdout]   --> crates/agent/src/routes/file.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio::io::AsyncWriteExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> crates/agent/src/routes/fs.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> crates/agent/src/routes/git.rs:6:26
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `JobStatus`
[INFO] [stdout]  --> crates/agent/src/routes/job.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::jobs::{self, JobStatus};
[INFO] [stdout]   |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> crates/agent/src/routes/process.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> crates/agent/src/routes/process.rs:69:13
[INFO] [stdout]    |
[INFO] [stdout] 69 |         use std::str::FromStr;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sysinfo::Pid`
[INFO] [stdout]    --> crates/agent/src/routes/process.rs:141:9
[INFO] [stdout]     |
[INFO] [stdout] 141 |     use sysinfo::Pid;
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]   --> crates/agent/src/routes/ui.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]     --> crates/agent/src/routes/ui.rs:1069:9
[INFO] [stdout]      |
[INFO] [stdout] 1069 |     use super::*;
[INFO] [stdout]      |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::Bytes`
[INFO] [stdout]  --> crates/agent/src/sessions.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use bytes::Bytes;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::oneshot`
[INFO] [stdout]  --> crates/agent/src/sessions.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tokio::sync::oneshot;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `warn`
[INFO] [stdout]  --> crates/agent/src/sessions.rs:9:15
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tracing::{debug, warn};
[INFO] [stdout]   |               ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> crates/agent/src/config.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::Bytes`
[INFO] [stdout]  --> crates/agent/src/jobs.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use bytes::Bytes;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> crates/agent/src/jobs.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{debug, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> crates/agent/src/routes/file.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::io::AsyncWriteExt`
[INFO] [stdout]   --> crates/agent/src/routes/file.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio::io::AsyncWriteExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> crates/agent/src/routes/fs.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> crates/agent/src/routes/git.rs:6:26
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `JobStatus`
[INFO] [stdout]  --> crates/agent/src/routes/job.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::jobs::{self, JobStatus};
[INFO] [stdout]   |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> crates/agent/src/routes/process.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> crates/agent/src/routes/process.rs:69:13
[INFO] [stdout]    |
[INFO] [stdout] 69 |         use std::str::FromStr;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sysinfo::Pid`
[INFO] [stdout]    --> crates/agent/src/routes/process.rs:141:9
[INFO] [stdout]     |
[INFO] [stdout] 141 |     use sysinfo::Pid;
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]   --> crates/agent/src/routes/ui.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::Bytes`
[INFO] [stdout]  --> crates/agent/src/sessions.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use bytes::Bytes;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::oneshot`
[INFO] [stdout]  --> crates/agent/src/sessions.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tokio::sync::oneshot;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `warn`
[INFO] [stdout]  --> crates/agent/src/sessions.rs:9:15
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tracing::{debug, warn};
[INFO] [stdout]   |               ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking mcp-server v0.1.0 (/opt/rustwide/workdir/crates/mcp-server)
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/agent/src/routes/file.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 219 |     let mut lines: Vec<&str> = content.lines().collect();
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/agent/src/routes/file.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 219 |     let mut lines: Vec<&str> = content.lines().collect();
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/agent/src/routes/git.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |     let mut unstaged = 0u32;
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> crates/mcp-server/src/tools/env.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ExecResult`
[INFO] [stdout]  --> crates/mcp-server/src/tools/file.rs:3:63
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::transport::{agent, dispatch_exec, CircuitBreakers, ExecResult};
[INFO] [stdout]   |                                                               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Write`
[INFO] [stdout]    --> crates/mcp-server/src/tools/file.rs:324:9
[INFO] [stdout]     |
[INFO] [stdout] 324 |     use std::fmt::Write;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::RemoteExecError`
[INFO] [stdout]  --> crates/mcp-server/src/tools/fleet.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::error::RemoteExecError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> crates/mcp-server/src/tools/fs.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Capabilities`
[INFO] [stdout]  --> crates/mcp-server/src/tools/machine.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::db::{Capabilities, Db, Machine};
[INFO] [stdout]   |                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::RemoteExecError`
[INFO] [stdout]   --> crates/mcp-server/src/tools/mod.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::error::RemoteExecError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]   --> crates/mcp-server/src/tools/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use tracing::info;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `russh::keys::key::KeyPair`
[INFO] [stdout]  --> crates/mcp-server/src/transport/ssh.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use russh::keys::key::KeyPair;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `warn`
[INFO] [stdout]   --> crates/mcp-server/src/transport/ssh.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tracing::{debug, warn};
[INFO] [stdout]    |               ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> crates/mcp-server/src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> crates/mcp-server/src/main.rs:21:21
[INFO] [stdout]    |
[INFO] [stdout] 21 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/agent/src/routes/git.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |     let mut unstaged = 0u32;
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> crates/mcp-server/src/tools/env.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ExecResult`
[INFO] [stdout]  --> crates/mcp-server/src/tools/file.rs:3:63
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::transport::{agent, dispatch_exec, CircuitBreakers, ExecResult};
[INFO] [stdout]   |                                                               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Write`
[INFO] [stdout]    --> crates/mcp-server/src/tools/file.rs:324:9
[INFO] [stdout]     |
[INFO] [stdout] 324 |     use std::fmt::Write;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::RemoteExecError`
[INFO] [stdout]  --> crates/mcp-server/src/tools/fleet.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::error::RemoteExecError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> crates/mcp-server/src/tools/fs.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Capabilities`
[INFO] [stdout]  --> crates/mcp-server/src/tools/machine.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::db::{Capabilities, Db, Machine};
[INFO] [stdout]   |                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Capabilities`
[INFO] [stdout]    --> crates/mcp-server/src/tools/ui.rs:295:21
[INFO] [stdout]     |
[INFO] [stdout] 295 |     use crate::db::{Capabilities, Db, Machine};
[INFO] [stdout]     |                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::RemoteExecError`
[INFO] [stdout]   --> crates/mcp-server/src/tools/mod.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::error::RemoteExecError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]   --> crates/mcp-server/src/tools/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use tracing::info;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `russh::keys::key::KeyPair`
[INFO] [stdout]  --> crates/mcp-server/src/transport/ssh.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use russh::keys::key::KeyPair;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `warn`
[INFO] [stdout]   --> crates/mcp-server/src/transport/ssh.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tracing::{debug, warn};
[INFO] [stdout]    |               ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> crates/mcp-server/src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> crates/mcp-server/src/main.rs:21:21
[INFO] [stdout]    |
[INFO] [stdout] 21 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old`
[INFO] [stdout]   --> crates/agent/src/jobs.rs:51:25
[INFO] [stdout]    |
[INFO] [stdout] 51 |             if let Some(old) = q.pop_front() {
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_old`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old`
[INFO] [stdout]   --> crates/agent/src/jobs.rs:51:25
[INFO] [stdout]    |
[INFO] [stdout] 51 |             if let Some(old) = q.pop_front() {
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_old`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `proc`
[INFO] [stdout]    --> crates/agent/src/routes/process.rs:132:25
[INFO] [stdout]     |
[INFO] [stdout] 132 |             .map(|(pid, proc)| {
[INFO] [stdout]     |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_proc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `proc`
[INFO] [stdout]    --> crates/agent/src/routes/process.rs:132:25
[INFO] [stdout]     |
[INFO] [stdout] 132 |             .map(|(pid, proc)| {
[INFO] [stdout]     |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_proc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:788:57
[INFO] [stdout]     |
[INFO] [stdout] 788 | pub async fn get_ui_tree(_state: State<AppState>, Query(q): Query<TreeQuery>) -> Response {
[INFO] [stdout]     |                                                         ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:805:58
[INFO] [stdout]     |
[INFO] [stdout] 805 | pub async fn post_ui_focus(_state: State<AppState>, Json(req): Json<FocusRequest>) -> Response {
[INFO] [stdout]     |                                                          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:821:58
[INFO] [stdout]     |
[INFO] [stdout] 821 | pub async fn post_ui_click(_state: State<AppState>, Json(req): Json<ClickRequest>) -> Response {
[INFO] [stdout]     |                                                          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:837:57
[INFO] [stdout]     |
[INFO] [stdout] 837 | pub async fn post_ui_move(_state: State<AppState>, Json(req): Json<MoveRequest>) -> Response {
[INFO] [stdout]     |                                                         ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:853:57
[INFO] [stdout]     |
[INFO] [stdout] 853 | pub async fn post_ui_type(_state: State<AppState>, Json(req): Json<TypeRequest>) -> Response {
[INFO] [stdout]     |                                                         ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:869:56
[INFO] [stdout]     |
[INFO] [stdout] 869 | pub async fn post_ui_key(_state: State<AppState>, Json(req): Json<KeyRequest>) -> Response {
[INFO] [stdout]     |                                                        ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:885:59
[INFO] [stdout]     |
[INFO] [stdout] 885 | pub async fn post_ui_scroll(_state: State<AppState>, Json(req): Json<ScrollRequest>) -> Response {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:907:11
[INFO] [stdout]     |
[INFO] [stdout] 907 |     Query(q): Query<ElementQuery>,
[INFO] [stdout]     |           ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:932:10
[INFO] [stdout]     |
[INFO] [stdout] 932 |     Json(req): Json<ClickElementRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:957:11
[INFO] [stdout]     |
[INFO] [stdout] 957 |     Query(q): Query<ElementQuery>,
[INFO] [stdout]     |           ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:982:10
[INFO] [stdout]     |
[INFO] [stdout] 982 |     Json(req): Json<SetValueRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]     --> crates/agent/src/routes/ui.rs:1008:11
[INFO] [stdout]      |
[INFO] [stdout] 1008 |     Query(q): Query<ScreenshotQuery>,
[INFO] [stdout]      |           ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]     --> crates/agent/src/routes/ui.rs:1027:11
[INFO] [stdout]      |
[INFO] [stdout] 1027 |     Query(q): Query<TreeQuery>,
[INFO] [stdout]      |           ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]     --> crates/agent/src/routes/ui.rs:1049:11
[INFO] [stdout]      |
[INFO] [stdout] 1049 |     Query(q): Query<ScreenshotQuery>,
[INFO] [stdout]      |           ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:788:57
[INFO] [stdout]     |
[INFO] [stdout] 788 | pub async fn get_ui_tree(_state: State<AppState>, Query(q): Query<TreeQuery>) -> Response {
[INFO] [stdout]     |                                                         ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:805:58
[INFO] [stdout]     |
[INFO] [stdout] 805 | pub async fn post_ui_focus(_state: State<AppState>, Json(req): Json<FocusRequest>) -> Response {
[INFO] [stdout]     |                                                          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:821:58
[INFO] [stdout]     |
[INFO] [stdout] 821 | pub async fn post_ui_click(_state: State<AppState>, Json(req): Json<ClickRequest>) -> Response {
[INFO] [stdout]     |                                                          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:837:57
[INFO] [stdout]     |
[INFO] [stdout] 837 | pub async fn post_ui_move(_state: State<AppState>, Json(req): Json<MoveRequest>) -> Response {
[INFO] [stdout]     |                                                         ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:853:57
[INFO] [stdout]     |
[INFO] [stdout] 853 | pub async fn post_ui_type(_state: State<AppState>, Json(req): Json<TypeRequest>) -> Response {
[INFO] [stdout]     |                                                         ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:869:56
[INFO] [stdout]     |
[INFO] [stdout] 869 | pub async fn post_ui_key(_state: State<AppState>, Json(req): Json<KeyRequest>) -> Response {
[INFO] [stdout]     |                                                        ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:885:59
[INFO] [stdout]     |
[INFO] [stdout] 885 | pub async fn post_ui_scroll(_state: State<AppState>, Json(req): Json<ScrollRequest>) -> Response {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:907:11
[INFO] [stdout]     |
[INFO] [stdout] 907 |     Query(q): Query<ElementQuery>,
[INFO] [stdout]     |           ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:932:10
[INFO] [stdout]     |
[INFO] [stdout] 932 |     Json(req): Json<ClickElementRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:957:11
[INFO] [stdout]     |
[INFO] [stdout] 957 |     Query(q): Query<ElementQuery>,
[INFO] [stdout]     |           ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/agent/src/routes/ui.rs:982:10
[INFO] [stdout]     |
[INFO] [stdout] 982 |     Json(req): Json<SetValueRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]     --> crates/agent/src/routes/ui.rs:1008:11
[INFO] [stdout]      |
[INFO] [stdout] 1008 |     Query(q): Query<ScreenshotQuery>,
[INFO] [stdout]      |           ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]     --> crates/agent/src/routes/ui.rs:1027:11
[INFO] [stdout]      |
[INFO] [stdout] 1027 |     Query(q): Query<TreeQuery>,
[INFO] [stdout]      |           ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]     --> crates/agent/src/routes/ui.rs:1049:11
[INFO] [stdout]      |
[INFO] [stdout] 1049 |     Query(q): Query<ScreenshotQuery>,
[INFO] [stdout]      |           ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ok` is never used
[INFO] [stdout]   --> crates/agent/src/routes/ui.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn ok(v: serde_json::Value) -> Response {
[INFO] [stdout]    |    ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ok` is never used
[INFO] [stdout]   --> crates/agent/src/routes/ui.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn ok(v: serde_json::Value) -> Response {
[INFO] [stdout]    |    ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CliArgs`
[INFO] [stdout]   --> crates/agent/tests/integration.rs:18:14
[INFO] [stdout]    |
[INFO] [stdout] 18 |     config::{CliArgs, Config, HotConfig},
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `follow`
[INFO] [stdout]   --> crates/mcp-server/src/tools/docker.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     follow: bool,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_follow`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `circuits`
[INFO] [stdout]    --> crates/mcp-server/src/tools/env.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 114 |     circuits: Arc<CircuitBreakers>,
[INFO] [stdout]     |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_circuits`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/mcp-server/src/tools/fs.rs:146:13
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let req = serde_json::json!({ "path": path, "recursive": recursive });
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_seen`
[INFO] [stdout]   --> crates/mcp-server/src/tools/machine.rs:57:13
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let last_seen = m.last_seen.map(|t| {
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_seen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `follow`
[INFO] [stdout]   --> crates/mcp-server/src/tools/docker.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     follow: bool,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_follow`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `circuits`
[INFO] [stdout]    --> crates/mcp-server/src/tools/env.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 114 |     circuits: Arc<CircuitBreakers>,
[INFO] [stdout]     |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_circuits`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> crates/mcp-server/src/tools/fs.rs:146:13
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let req = serde_json::json!({ "path": path, "recursive": recursive });
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_seen`
[INFO] [stdout]   --> crates/mcp-server/src/tools/machine.rs:57:13
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let last_seen = m.last_seen.map(|t| {
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_seen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_LOG_SIZE` is never used
[INFO] [stdout]  --> crates/mcp-server/src/audit.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MAX_LOG_SIZE: u64 = 10 * 1024 * 1024; // 10 MB
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_ROTATIONS` is never used
[INFO] [stdout]  --> crates/mcp-server/src/audit.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const MAX_ROTATIONS: u32 = 5;
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditEntry` is never constructed
[INFO] [stdout]   --> crates/mcp-server/src/audit.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct AuditEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `inner` is never read
[INFO] [stdout]   --> crates/mcp-server/src/audit.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct AuditLog {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 32 |     inner: Arc<Mutex<AuditLogInner>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AuditLog` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `path` and `file` are never read
[INFO] [stdout]   --> crates/mcp-server/src/audit.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct AuditLogInner {
[INFO] [stdout]    |        ------------- fields in this struct
[INFO] [stdout] 36 |     path: PathBuf,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 37 |     file: File,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `record` is never used
[INFO] [stdout]   --> crates/mcp-server/src/audit.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl AuditLog {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn record(&self, entry: AuditEntry) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotate_logs` is never used
[INFO] [stdout]   --> crates/mcp-server/src/audit.rs:72:4
[INFO] [stdout]    |
[INFO] [stdout] 72 | fn rotate_logs(path: &PathBuf) -> Result<()> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `redact_args` is never used
[INFO] [stdout]   --> crates/mcp-server/src/audit.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn redact_args(args: &serde_json::Value) -> serde_json::Value {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `verify_request` is never used
[INFO] [stdout]   --> crates/mcp-server/src/auth.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn verify_request(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `OutputTruncated` and `MachineUnreachable` are never constructed
[INFO] [stdout]   --> crates/mcp-server/src/error.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum RemoteExecError {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 16 |     OutputTruncated { shown_bytes: usize, total_bytes: usize },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     #[error("Machine '{machine}' unreachable (last seen {last_seen_secs}s ago). Run machine_test to check.")]
[INFO] [stdout] 18 |     MachineUnreachable { machine: String, last_seen_secs: u64 },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RemoteExecError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `audit` is never read
[INFO] [stdout]   --> crates/mcp-server/src/tools/mod.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct ToolContext {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 86 |     pub db: Db,
[INFO] [stdout] 87 |     pub audit: AuditLog,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ToolContext` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `invoke` is never used
[INFO] [stdout]   --> crates/mcp-server/src/tools/mod.rs:96:18
[INFO] [stdout]    |
[INFO] [stdout] 91 | impl ToolContext {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 96 |     pub async fn invoke<F, Fut>(
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `JobLogsRequest` is never constructed
[INFO] [stdout]   --> crates/mcp-server/src/tools/exec.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | struct JobLogsRequest {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileReadReq` is never constructed
[INFO] [stdout]   --> crates/mcp-server/src/tools/file.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | struct FileReadReq<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileInsertReq` is never constructed
[INFO] [stdout]   --> crates/mcp-server/src/tools/file.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | struct FileInsertReq<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileDeleteLinesReq` is never constructed
[INFO] [stdout]   --> crates/mcp-server/src/tools/file.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | struct FileDeleteLinesReq<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `HalfOpen` is never constructed
[INFO] [stdout]   --> crates/mcp-server/src/transport/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum CircuitState {
[INFO] [stdout]    |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 15 |     HalfOpen,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CircuitState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `agent_get_text` is never used
[INFO] [stdout]    --> crates/mcp-server/src/transport/agent.rs:181:14
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub async fn agent_get_text(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SshPools` is never used
[INFO] [stdout]    --> crates/mcp-server/src/transport/ssh.rs:221:10
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub type SshPools = DashMap<String, Arc<SshPool>>;
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_pool_store` is never used
[INFO] [stdout]    --> crates/mcp-server/src/transport/ssh.rs:223:8
[INFO] [stdout]     |
[INFO] [stdout] 223 | pub fn create_pool_store() -> Arc<SshPools> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_LOG_SIZE` is never used
[INFO] [stdout]  --> crates/mcp-server/src/audit.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MAX_LOG_SIZE: u64 = 10 * 1024 * 1024; // 10 MB
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_ROTATIONS` is never used
[INFO] [stdout]  --> crates/mcp-server/src/audit.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const MAX_ROTATIONS: u32 = 5;
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditEntry` is never constructed
[INFO] [stdout]   --> crates/mcp-server/src/audit.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct AuditEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `inner` is never read
[INFO] [stdout]   --> crates/mcp-server/src/audit.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct AuditLog {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 32 |     inner: Arc<Mutex<AuditLogInner>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AuditLog` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `path` and `file` are never read
[INFO] [stdout]   --> crates/mcp-server/src/audit.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct AuditLogInner {
[INFO] [stdout]    |        ------------- fields in this struct
[INFO] [stdout] 36 |     path: PathBuf,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 37 |     file: File,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `record` is never used
[INFO] [stdout]   --> crates/mcp-server/src/audit.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl AuditLog {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn record(&self, entry: AuditEntry) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotate_logs` is never used
[INFO] [stdout]   --> crates/mcp-server/src/audit.rs:72:4
[INFO] [stdout]    |
[INFO] [stdout] 72 | fn rotate_logs(path: &PathBuf) -> Result<()> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `audit` is never read
[INFO] [stdout]   --> crates/mcp-server/src/tools/mod.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct ToolContext {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 86 |     pub db: Db,
[INFO] [stdout] 87 |     pub audit: AuditLog,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ToolContext` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `invoke` is never used
[INFO] [stdout]   --> crates/mcp-server/src/tools/mod.rs:96:18
[INFO] [stdout]    |
[INFO] [stdout] 91 | impl ToolContext {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 96 |     pub async fn invoke<F, Fut>(
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `JobLogsRequest` is never constructed
[INFO] [stdout]   --> crates/mcp-server/src/tools/exec.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | struct JobLogsRequest {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileReadReq` is never constructed
[INFO] [stdout]   --> crates/mcp-server/src/tools/file.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | struct FileReadReq<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileInsertReq` is never constructed
[INFO] [stdout]   --> crates/mcp-server/src/tools/file.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | struct FileInsertReq<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileDeleteLinesReq` is never constructed
[INFO] [stdout]   --> crates/mcp-server/src/tools/file.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | struct FileDeleteLinesReq<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_machine_with_agent` is never used
[INFO] [stdout]    --> crates/mcp-server/src/tools/ui.rs:317:8
[INFO] [stdout]     |
[INFO] [stdout] 317 |     fn make_machine_with_agent() -> Machine {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `HalfOpen` is never constructed
[INFO] [stdout]   --> crates/mcp-server/src/transport/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum CircuitState {
[INFO] [stdout]    |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 15 |     HalfOpen,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CircuitState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `agent_get_text` is never used
[INFO] [stdout]    --> crates/mcp-server/src/transport/agent.rs:181:14
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub async fn agent_get_text(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SshPools` is never used
[INFO] [stdout]    --> crates/mcp-server/src/transport/ssh.rs:221:10
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub type SshPools = DashMap<String, Arc<SshPool>>;
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_pool_store` is never used
[INFO] [stdout]    --> crates/mcp-server/src/transport/ssh.rs:223:8
[INFO] [stdout]     |
[INFO] [stdout] 223 | pub fn create_pool_store() -> Arc<SshPools> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 07s
[INFO] running `Command { std: "docker" "inspect" "21313dbaa5d54d365fb0999e576f2ea441d8e2d32b1427de534a3009c9db68eb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "21313dbaa5d54d365fb0999e576f2ea441d8e2d32b1427de534a3009c9db68eb", kill_on_drop: false }`
[INFO] [stdout] 21313dbaa5d54d365fb0999e576f2ea441d8e2d32b1427de534a3009c9db68eb
